/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.upn.sigemfi.sac.be;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author Colao
 */
@Entity
@Table(name = "SAC_PRODUCTO_PARAMETRO", catalog = "SIGEMFI", schema = "dbo")
@NamedQueries({@NamedQuery(name = "ProductoParametro.findAll", query = "SELECT p FROM ProductoParametro p"), @NamedQuery(name = "ProductoParametro.findByFidSacProductoSbs", query = "SELECT p FROM ProductoParametro p WHERE p.productoParametroPK.fidSacProductoSbs = :fidSacProductoSbs"), @NamedQuery(name = "ProductoParametro.findByFidSacParametroScoring", query = "SELECT p FROM ProductoParametro p WHERE p.productoParametroPK.fidSacParametroScoring = :fidSacParametroScoring"), @NamedQuery(name = "ProductoParametro.findByObligatorio", query = "SELECT p FROM ProductoParametro p WHERE p.obligatorio = :obligatorio"), @NamedQuery(name = "ProductoParametro.findByPeso", query = "SELECT p FROM ProductoParametro p WHERE p.peso = :peso")})
public class ProductoParametro implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected ProductoParametroPK productoParametroPK;
    @Basic(optional = false)
    @Column(name = "OBLIGATORIO", nullable = false)
    private boolean obligatorio;
    @Basic(optional = false)
    @Column(name = "PESO", nullable = false)
    private int peso;
    @JoinColumn(name = "FID_SAC_PARAMETRO_SCORING", referencedColumnName = "ID_PARAMETRO_SCORING", nullable = false, insertable = false, updatable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private ParametroScoring parametroScoring;
    @JoinColumn(name = "FID_SAC_PRODUCTO_SBS", referencedColumnName = "ID_PRODUCTO_SBS", nullable = false, insertable = false, updatable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private ProductoSbs productoSbs;

    public ProductoParametro() {
    }

    public ProductoParametro(ProductoParametroPK productoParametroPK) {
        this.productoParametroPK = productoParametroPK;
    }

    public ProductoParametro(ProductoParametroPK productoParametroPK, boolean obligatorio, int peso) {
        this.productoParametroPK = productoParametroPK;
        this.obligatorio = obligatorio;
        this.peso = peso;
    }

    public ProductoParametro(long fidSacProductoSbs, long fidSacParametroScoring) {
        this.productoParametroPK = new ProductoParametroPK(fidSacProductoSbs, fidSacParametroScoring);
    }

    public ProductoParametroPK getProductoParametroPK() {
        return productoParametroPK;
    }

    public void setProductoParametroPK(ProductoParametroPK productoParametroPK) {
        this.productoParametroPK = productoParametroPK;
    }

    public boolean getObligatorio() {
        return obligatorio;
    }

    public void setObligatorio(boolean obligatorio) {
        this.obligatorio = obligatorio;
    }

    public int getPeso() {
        return peso;
    }

    public void setPeso(int peso) {
        this.peso = peso;
    }

    public ParametroScoring getParametroScoring() {
        return parametroScoring;
    }

    public void setParametroScoring(ParametroScoring parametroScoring) {
        this.parametroScoring = parametroScoring;
    }

    public ProductoSbs getProductoSbs() {
        return productoSbs;
    }

    public void setProductoSbs(ProductoSbs productoSbs) {
        this.productoSbs = productoSbs;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (productoParametroPK != null ? productoParametroPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ProductoParametro)) {
            return false;
        }
        ProductoParametro other = (ProductoParametro) object;
        if ((this.productoParametroPK == null && other.productoParametroPK != null) || (this.productoParametroPK != null && !this.productoParametroPK.equals(other.productoParametroPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "edu.upn.sigemfi.sac.be.ProductoParametro[productoParametroPK=" + productoParametroPK + "]";
    }

}
